﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation.BusinessRules;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessLogic.BusinessRuleValidation {

	/// <summary>
	/// Efetua validações de exclusão de tipo de aplicação de corretagem
	/// </summary>
    public class ValidacaoExclusaoTipoAplicacaoCorretagem : BaseBusinessRuleValidation<BusinessEntity.Parameter.FiltroTipoAplicacaoCorretagemChave>, IBusinessRuleValidation
    {

		#region Atributos 
		private int _erroExistemDependencias = 109481;
		private int _erroObjetoNulo = 109480; 
		#endregion Atributos

		#region Propriedades 
		/// <summary>
		/// Codigo erro quando existem dependencias de cadastro de tipo de aplicação de
		/// corretagem com outras enitdades/tabelas
		/// </summary>
		public int ErroExistemDependencias{
			get
			{
				return _erroExistemDependencias;
			}
			set
			{
				_erroExistemDependencias = value;
			}
		}
		/// <summary>
		/// Codigo de erro para objeto nulo
		/// </summary>
		public int ErroObjetoNulo{
			get
			{
				return _erroObjetoNulo;
			}
			set
			{
				_erroObjetoNulo = value;
			}
		} 
		#endregion Propriedades

		#region Construtores 
		public ValidacaoExclusaoTipoAplicacaoCorretagem(){} 
		#endregion Construtores

		#region Métodos 
		/// <summary>
		/// Obtem uma lista de erros
		/// </summary>
		public List<Infra.Common.Validation.ValidationError> GetErrors()
        {
            return base.ErrorsList;
		}
		/// <summary>
		/// Valida regras de exclusão
		/// </summary>
		public void Validate()
        {
            if (base.EntityToValidate == null)
                base.AddValidationError(ErroObjetoNulo);

            BusinessEntity.Parameter.FiltroTipoAplicacaoCorretagemChave filtro = new BusinessEntity.Parameter.FiltroTipoAplicacaoCorretagemChave();
            filtro.IdentificadorBaseCalculo = base.EntityToValidate.IdentificadorBaseCalculo;
            ResourceAccess.FaixaAplicacao ra = new ResourceAccess.FaixaAplicacao();
            if (ra.VerificarDependenciasTipoAplicacaoCorretagem(filtro))
            {
                base.AddValidationError(ErroExistemDependencias);
            }
		} 
		#endregion Métodos 

	}

}